
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @param <E> indica que la clase es generica.
 * @author Alejo
 */
public abstract class QueueAbstract<E> implements Queue<E> {
     

    
    
    /**
     *atributo en comun contador o indicador de elementos en lista 
     */
    protected int cp = 0;
    
    /**
     *atributo en comun utilizado en empty 
     */
    protected boolean vac = true;
    
   /**
     *Procedimiento que permite el ingreso de un elemento a la cola, este elemento es agregado al final de cola. 
     * @param value Es el parametro que representa al elemento que se desea que sea agregado al final de la cola.
     */
   
    @Override
        public abstract void offer(E value);
        
    /**
 *Procedimiento que devuelve el elemento que se encuentra al inicio de la cola, y luego lo remueve de la cola.
 *de encontrarse vacia la cola devuelve null como resultado. 
 * @return Devuelve null si la cola se encuentra vacia, sino devuelve el elemento que esta al inicio de la cola.
 */

    @Override
        public abstract E poll();
   /**
 * Procedimiento que devuelve el primer elemento de la cola, pero sin removerlo de la cola, de encontrase vacia la cola devuelve un null.
 * @return devuelve null de encontrarse vacia la cola, sino devuelve el primer elemento en la cola.
 */

    @Override
        public abstract E peek();


     /**
     * Metodo que indica por medio de un valor boolean si la pila se encuentra vacia o no.
     * Luego de ser llamado no genra cambios en la pila.
     * @return Devuelve un valor boolean, True para vacio y False para no vacio
     */
    @Override
public boolean isEmpty(){
    if (cp == 0)
            vac = true;
        else 
            vac = false;
        return vac;
    
    }

   /**
 * Procedimiento que permite conocer la cantidad de elementos que se encuentran en la cola.
 * @return Devuelve el valor de la cantidad de elementos que se encuentran en la cola, es un int.
 */

    @Override
public  int size(){
    return cp;
    }

    
}
